/**
 * Unsigned, Immutable base-10 integer of arbitrary precision. Only the most basic
 * functionality of incrementing and decrementing is available. This interface is for 
 * educational purposes only, developers looking for a robust natural number interface 
 * should look elsewhere. 
 * 
 * @mathmodel num is an immutable natural number.
 * @constraint num >= 0. num is an integer.
 * @initially num = 0.
 * @author Sam Snyder
 * @see java.math.BigInteger
 */
public interface BigNatural {

	/**
	 *  Returns the natural number incremented by one.
	 *  
	 *  @return #num + 1
	 */
	public abstract BigNatural increment();

	/** 
	 * Returns the natural number decremented by one. If the number is already 0 
	 * then 0 is returned.
	 * 
	 *  @return if #num = 0 then return 0<br />
	 *  		 else return #num - 1
	 */
	public abstract BigNatural decrement();

	/**
	 * Converts the natural number to a string. No leading zeroes are displayed unless the
	 * number is exactly 0. Returned string does not contain commas or underscores or any 
	 * other delineations. 
	 * 
	 * @return num as a string
	 */
	public abstract String toString();

}